package com.shuang.greed5;

public class CanJump {
    //贪心：
    //局部最优：每次取最大跳跃步数（取最大覆盖范围），整体最优：最后得到整体最大覆盖范围，看是否能到终点。
    //不用纠结能跳几步只要找覆盖范围即可
    //i从覆盖范围里移动 最后覆盖范围大于等于数组最后一个元素即可
    public boolean canJump(int[] nums) {
        //定义覆盖范围 一开始从零开始
        int coverRange = 0;
        //遍历范围
        for (int i = 0; i <= coverRange; i++){
            //遍历求解每次最大覆盖范围
            coverRange = Math.max(coverRange, i + nums[i]);

            if (coverRange >= nums.length - 1){
                //覆盖范围够了就可以跳到最后
                return true;
            }
        }

        return false;
    }
}
